package org.example.service.impl;

import org.example.mapper.EmpLogMapper;
import org.example.pojo.EmpLog;
import org.example.service.EmpLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

@Service
public class EmpLogServiceImpl implements EmpLogService {

    @Autowired
    private EmpLogMapper empLogMapper;

    @Transactional(propagation = Propagation.REQUIRES_NEW)
    // 事务的传播行为:就是当一个事务方法被另一个事务方法调用时，这个事务方法应该如何进行事务控制。
    // propagation:用来配置事务的传播行为的。
    // Propagation.REQUIRES_NEW:不论是否有事务,都创建新事务,运行在一个独立的事务中。
/*  REQUIRED	【默认值】需要事务，有则加入，无则创建新事务
    REQUIRES_NEW	需要新事务，无论有无，总是创建新事务
    SUPPORTS	支持事务，有则加入，无则在无事务状态中运行
    NOT_SUPPORTED	不支持事务，在无事务状态下运行,如果当前存在已有事务,则挂起当前事务
    MANDATORY	必须有事务，否则抛异常
    NEVER	必须没事务，否则抛异常
*/
    @Override
    public void insertLog(EmpLog empLog) {
        empLogMapper.insert(empLog);
    }
}